package aiP.A3.BuchhaltungKomponente.DataAccessLayer.Entity;

import aiP.A3.PersistenceService.iEntity;

import javax.persistence.Basic;
import javax.persistence.Entity;
import javax.persistence.Id;
import java.util.Date;

/**
 * Created with IntelliJ IDEA.
 * User: Hero
 * Date: 15.06.14
 * Time: 18:35
 * To change this template use File | Settings | File Templates.
 */
//@javax.persistence.Table(name = "AI_RECHNUNG", schema = "HR", catalog = "")
@javax.persistence.Table(name = "AI_RECHNUNG", schema = "AIP", catalog = "")
@Entity
public class Rechnung implements iEntity {
    private int rechnungsnr;
    private Date rechnungsdatum;
    private int istbezahlt;
    private double betrag;
    private int auftragsnr;

    @javax.persistence.Column(name = "RECHNUNGSNR")
    @Id
    public int getRechnungsnr() {
        return rechnungsnr;
    }

    public void setRechnungsnr(int rechnungsnr) {
        this.rechnungsnr = rechnungsnr;
    }

    @javax.persistence.Column(name = "RECHNUNGSDATUM")
    @Basic
    public Date getRechnungsdatum() {
        return rechnungsdatum;
    }

    public void setRechnungsdatum(Date rechnungsdatum) {
        this.rechnungsdatum = rechnungsdatum;
    }

    @javax.persistence.Column(name = "ISTBEZAHLT")
    @Basic
    public int getIstbezahlt() {
        return istbezahlt;
    }

    public void setIstbezahlt(int istbezahlt) {
        this.istbezahlt = istbezahlt;
    }

    @javax.persistence.Column(name = "BETRAG")
    @Basic
    public double getBetrag() {
        return betrag;
    }

    public void setBetrag(double betrag) {
        this.betrag = betrag;
    }

    @javax.persistence.Column(name = "AUFTRAGSNR")
    @Basic
    public int getAuftragsnr() {
        return auftragsnr;
    }

    public void setAuftragsnr(int auftragsnr) {
        this.auftragsnr = auftragsnr;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Rechnung rechnung = (Rechnung) o;

        if (auftragsnr != rechnung.auftragsnr) return false;
        if (Double.compare(rechnung.betrag, betrag) != 0) return false;
        if (istbezahlt != rechnung.istbezahlt) return false;
        if (rechnungsnr != rechnung.rechnungsnr) return false;
        if (rechnungsdatum != null ? !rechnungsdatum.equals(rechnung.rechnungsdatum) : rechnung.rechnungsdatum != null)
            return false;

        return true;
    }

    @Override
    public int hashCode() {
        int result;
        long temp;
        result = rechnungsnr;
        result = 31 * result + (rechnungsdatum != null ? rechnungsdatum.hashCode() : 0);
        result = 31 * result + istbezahlt;
        temp = Double.doubleToLongBits(betrag);
        result = 31 * result + (int) (temp ^ (temp >>> 32));
        result = 31 * result + auftragsnr;
        return result;
    }

    public String toString(){
        return "Rechnungsnr: " + getRechnungsnr() + "Rechnungsdatum: " + getRechnungsdatum() + " Ist bezahlt?: " + getIstbezahlt() + "Betrag: " + getBetrag() + "Auftragsnr: " + getAuftragsnr();
    }
}
